/**
 * Copyright(c) 2013 Jade Techonologies Co., Ltd.
 *
 * History:
 *   13-7-11 上午9:37 Created by sky
 */
package com.jade.modules.message.sms;

import com.jade.framework.base.lang.Binary;
import com.jade.framework.base.lang.Hex;
import com.jade.framework.base.util.StringUtilsEx;

/**
 * 短信工具类。
 *
 * @author sky
 * @version 1.0 13-7-11 上午9:37
 */
public class SmsUtils
{
    /**
     * 根据消息格式将字符串转化成字节数组
     *
     * @param str    字符串
     * @param format 消息格式：0：ASCII串 3：短信写卡操作 4：二进制信息 8：UCS2编码 15：含GB汉字
     * @return 字节数组
     */
    public static byte[] toBytes(String str, int format)
    {
        if (str == null) {
            return null;
        }

        byte[] bytes = null;
        if (format == SmsConstants.FORMAT_UCS2) {
            //Uncode字符
            bytes = Binary.toBytes(str);
        }
        else if (format == SmsConstants.FORMAT_GBK) {
            bytes = StringUtilsEx.toBytes(str, "GBK");
        }
        else {
            bytes = StringUtilsEx.toBytes(str, "ISO_8859_1");
        }
        return bytes;
    }

    /**
     * 根据字节数组和格式参数还原字符串
     *
     * @param bytes  字节数组
     * @param format 消息格式：0：ASCII串 3：短信写卡操作 4：二进制信息 8：UCS2编码 15：含GB汉字
     * @return 字符串
     */
    public static String toString(byte[] bytes, int format)
    {
        if (bytes == null) {
            return null;
        }
        String str = null;
        if (format == SmsConstants.FORMAT_UCS2) {
            str = Binary.toString(bytes);
        }
        else if (format == SmsConstants.FORMAT_GBK) {
            str = StringUtilsEx.toString(bytes, "GBK");
        }
        else if (format == SmsConstants.FORMAT_BINARY) {
            //采用16进制显示
            str = Hex.encode(bytes);
        }
        else {
            str = StringUtilsEx.toString(bytes, "ISO_8859_1");
        }
        return str;
    }
}
